home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / Issue54 / Alfresco / TstCrypU.pas < prev   
Pascal/Delphi Source File  |  1999-12-12  |  3KB  |  130 lines

  1. unit TstCrypU;
  2.  
  3. interface
  4.  
  5. uses
  6.   Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, AACrypt;
  8.  
  9. type
  10.   TForm1 = class(TForm)
  11.     mOriginal: TMemo;
  12.     mEncrypted: TMemo;
  13.     mDecrypted: TMemo;
  14.     Label1: TLabel;
  15.     Label2: TLabel;
  16.     Label3: TLabel;
  17.     RadioGroup1: TRadioGroup;
  18.     edtKey: TEdit;
  19.     Label4: TLabel;
  20.     edtCaesarShift: TEdit;
  21.     Label5: TLabel;
  22.     Button1: TButton;
  23.     procedure RadioGroup1Click(Sender: TObject);
  24.     procedure Button1Click(Sender: TObject);
  25.     procedure FormCreate(Sender: TObject);
  26.   private
  27.     { Private declarations }
  28.   public
  29.     { Public declarations }
  30.     SubstTable : TaaADFGVXTable;
  31.   end;
  32.  
  33. var
  34.   Form1: TForm1;
  35.  
  36. implementation
  37.  
  38. {$R *.DFM}
  39.  
  40. procedure TForm1.RadioGroup1Click(Sender: TObject);
  41. begin
  42.   if RadioGroup1.ItemIndex = 0 then begin
  43.     edtCaesarShift.Enabled := true;
  44.     edtKey.Enabled := false;
  45.   end
  46.   else begin
  47.     edtCaesarShift.Enabled := false;
  48.     edtKey.Enabled := true;
  49.   end;
  50. end;
  51.  
  52. procedure TForm1.Button1Click(Sender: TObject);
  53. var
  54.   OrigStm    : TMemoryStream;
  55.   EncryptStm : TMemoryStream;
  56.   DecryptStm : TMemoryStream;
  57.   Shift : integer;
  58.   ec    : integer;
  59.   i     : integer;
  60.   XORKey : PByteArray;
  61. begin
  62.   OrigStm := nil;
  63.   EncryptStm := nil;
  64.   DecryptStm := nil;
  65.   try
  66.     OrigStm := TMemoryStream.Create;
  67.     EncryptStm := TMemoryStream.Create;
  68.     DecryptStm := TMemoryStream.Create;
  69.  
  70.     mOriginal.Lines.SaveToStream(OrigStm);
  71.  
  72.     case RadioGroup1.ItemIndex of
  73.       0 : begin
  74.             Val(edtCaesarShift.Text, Shift, ec);
  75.             if (ec <> 0) then
  76.               Shift := 3;
  77.             OrigStm.Position := 0;
  78.             AACaesarCipher(true, Shift, OrigStm, EncryptStm);
  79.             EncryptStm.Position := 0;
  80.             AACaesarCipher(false, Shift, EncryptStm, DecryptStm);
  81.           end;
  82.       1 : begin
  83.             OrigStm.Position := 0;
  84.             AAVigenereCipher(true, edtKey.Text, OrigStm, EncryptStm);
  85.             EncryptStm.Position := 0;
  86.             AAVigenereCipher(false, edtKey.Text, EncryptStm, DecryptStm);
  87.           end;
  88.       2 : begin
  89.             OrigStm.Position := 0;
  90.             AAADFGVXCipher(true, edtKey.Text, SubstTable,
  91.                            OrigStm, EncryptStm);
  92.             EncryptStm.Position := 0;
  93.             AAADFGVXCipher(false, edtKey.Text, SubstTable,
  94.                            EncryptStm, DecryptStm);
  95.           end;
  96.       3 : begin
  97.             GetMem(XORKey, length(edtKey.Text));
  98.             try
  99.               for i := 1 to length(edtKey.Text) do
  100.                 XORKey^[i-1] := ord(edtKey.Text[i]);
  101.               OrigStm.Position := 0;
  102.               AAXORCipher(XORKey, length(edtKey.Text),
  103.                           OrigStm, EncryptStm);
  104.               EncryptStm.Position := 0;
  105.               AAXORCipher(XORKey, length(edtKey.Text),
  106.                           EncryptStm, DecryptStm);
  107.             finally
  108.               FreeMem(XORKey, length(edtKey.Text));
  109.             end;
  110.           end;
  111.     end;
  112.  
  113.     EncryptStm.Position := 0;
  114.     mEncrypted.Lines.LoadFromStream(EncryptStm);
  115.     DecryptStm.Position := 0;
  116.     mDecrypted.Lines.LoadFromStream(DecryptStm);
  117.   finally
  118.     OrigStm.Free;
  119.     EncryptStm.Free;
  120.     DecryptStm.Free;
  121.   end;
  122. end;
  123.  
  124. procedure TForm1.FormCreate(Sender: TObject);
  125. begin
  126.   SubstTable := AAGenADFGVXTable;
  127. end;
  128.  
  129. end.
  130.